﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dotway.WPF.Controls.Utilities
{
    /// <summary>
    /// Color representation in h,s,v with h = [0 - 360], s,v = [0.0 - 1.0].
    /// </summary>
    public struct HSV
    {
        public HSV(double hue, double saturation, double value)
        {
            h = 0.0;
            s = 0.0;
            v = 0.0;

            H = hue;
            S = saturation;
            V = value;
        }

        private double h;
        public double H
        {
            get { return h; }
            set
            {
                if (value >= 0 && value <= 360)
                {
                    h = value;
                }
                else
                {
                    throw new ArgumentOutOfRangeException("H is not in the span [0, 360].");
                }
            }
        }

        private double s;
        public double S
        {
            get { return s; }
            set
            {
                if (value >= 0.0 && value <= 1.0)
                {
                    s = value;
                }
                else
                {
                    throw new ArgumentOutOfRangeException("S is not in the span [0, 1].");
                }
            }
        }

        private double v;
        public double V
        {
            get { return v; }
            set
            {
                if (value >= 0.0 && value <= 1.0)
                {
                    v = value;
                }
                else
                {
                    throw new ArgumentOutOfRangeException("V is not in the span [0, 1].");
                }
            }
        }


    }
}
